package com.jy.it.service.impl;

import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.jy.it.dao.CarDao;
import com.jy.it.dao.RuleDao;
import com.jy.it.dao.UserDao;
import com.jy.it.dao.WzDao;
import com.jy.it.entity.Car;
import com.jy.it.entity.Rule;
import com.jy.it.entity.User;
import com.jy.it.entity.Wz;
import com.jy.it.service.WzService;
import com.jy.it.util.EmailUtil;
import com.jy.it.util.SmsUtil;
@Service
public class WzServiceImpl implements WzService {
	@Autowired
	private CarDao carDao;
	@Autowired
	private RuleDao ruleDao;
	@Autowired
	private WzDao wzDao;
	@Autowired
	private EmailUtil emailUtil;
	@Autowired
	private UserDao userDao;
	@Override
	public int add(String carno, int ruleid, String wzaddress, Date wztime,String photo, String remark, int adminid) {
		//页面输入是车牌号码，数据库先根据号码查出车牌完整信息，包括id和车主电话等等，用于功能需求
		Car c=carDao.selectByNo(carno);
		if(c==null)//如果车牌号找不到，应该是录错号码，返回0
			return 0;
		Rule rule=ruleDao.selectById(ruleid);//新增时候需要插入扣分和罚款，所以也查Rule完整对象出来先
		int n=wzDao.insert(c.getId(),rule.getId(),wzaddress,wztime,rule.getPay(),rule.getScore(),photo,remark,adminid);
		//发短信给车主
		//SmsUtil.sendSms(c.getUserPhone(),"尊敬的"+c.getUserName()+":您有一笔违章记录，请及时确认！违章内容："+rule.getName());
		emailUtil.sendMail(c.getUserEmail(),c.getNo()+"违章通知","尊敬的"+c.getUserName()
						+":您有一笔违章记录，请及时确认！违章内容："+rule.getName());
		return n;
	}
	@Override
	public List<Wz> findWzByCar(int carid) {
		
		return wzDao.selectListByCar(carid);
	}
	@Override
	public Wz findById(int wzid) {
		return wzDao.selectById(wzid);
	}
	@Override
	public int pay(Wz wz, int userid) {
		//扣减用户罚单分值
		User u=userDao.selectById(userid);
		u.setScore(u.getScore()-wz.getScore());
		userDao.update(u);//将数据保存到数据库
		//登记违章记录的驾驶员是谁
		wz.setState("缴费完成");
		wz.setDriverId(userid);
		int n=wzDao.update(wz);//将修改保存到数据库
		if(u.getScore()<=0) {
			//发送短信和邮件:,告知罚款缴纳成功，告知当前积分，并要求15天内到交警部门报到学习
		}else {
			//发送邮件，告知罚款缴纳成功，告知当前积分
		}
		return n;
	}
	@Override
	public List<Wz> findWzByCarNo(String carno) {
		return wzDao.selectListByCarNo(carno);
	}
}
